The following invention relates to an apparatus and method for allocating the execution resources of a data processing system among a plurality of tasks competing for system resources whose priorities are dynamically changing. At the same time, the apparatus maintains the order of linked tasks as might be encountered in a round robin set or group of sets.
Management of tasks having dynamically changing priorities such as a set of multiply interacting round-robin sets is typically accomplished in software by the operating system. The software maintains dynamically changing linked lists. Such lists are typically kept in memory and their access and management necessarily consume a plurality of CPU cycles. One approach to dealing with this complex problem is to employ a general-purpose processor devoted specifically to priority management. Other methods simply assign priority management to a special-purpose operating-system task. In either case, complex code must be written and maintained and CPU cycles that could be profitably employed elsewhere are consumed in task management. As the number of tasks increases, their potential interaction and hence the functional complexity of the management software and the time necessary to execute the software instructions can increase factorially while the linked-list data structure increases as the square of the number of tasks. Thus, the complexity and cost in CPU cycles of a system of 8 tasks could be, in the extreme case, as much as 1600 times that of a system of only 4 tasks. Clearly the commonly used method of task management via priority structures quickly exceeds the capacity of any presently available computing system as the number of tasks increases.